package de.nak.terminumfrageapp.service;

import java.util.List;
import de.nak.terminumfrageapp.dao.TerminDAO;
import de.nak.terminumfrageapp.model.Termin;
import de.nak.terminumfrageapp.model.Umfrage;

/**
 * @description Service Klasse fuer @link Termin.
 * @author Cornelia Kugler, Inga Brinkmann
 * 
 */
public class TerminService implements ITerminService {
	/** das Termin DAO */
	private TerminDAO terminDAO;

	/** Getter und Setter */
	public TerminDAO getTerminDAO() {
		return terminDAO;
	}

	public void setTerminDAO(TerminDAO terminDAO) {
		this.terminDAO = terminDAO;
	}

	/**
	 * @description erstellt einen Termin.
	 * @param Umfrage
	 * @return Termin
	 */
	@Override
	public Termin terminErstellen(Umfrage umfrage) {
		Termin termin = new Termin();
		termin.setUmfrage(umfrage);
		termin.setTerminInitial(true);
		umfrage.terminZuordnen(termin);
		return terminDAO.erstellen(termin);

	}

	/**
	 * @description laedt eine Liste mit Terminen fuer eine Umfrage.
	 * @param Umfrage
	 * @return List<Termin>
	 */
	@Override
	public List<Termin> ladeAlleTermine(Umfrage umfrage) {
		return terminDAO.ladeAlleTermine(umfrage);
	}

	/**
	 * @desciption loescht einen Termin.
	 * @param Termin
	 */
	@Override
	public void terminLoeschen(Termin termin) {
		terminDAO.loeschen(termin);

	}

	/**
	 * @description speichert einen Termin.
	 * @param Termin
	 */
	public void speichern(Termin termin) {
		termin.setTerminInitial(false);
		terminDAO.speichern(termin);

	}

	/**
	 * @description loescht einen Termin.
	 * @param id
	 */
	@Override
	public void loeschen(Long ausgewaehlteTerminId) {
		terminDAO.loeschen(terminLaden(ausgewaehlteTerminId));
	}

	/**
	 * @description laedt einen Termin.
	 * @param id
	 * @return Termin
	 */
	public Termin terminLaden(Long id) {
		return terminDAO.ladeTermin(id);
	}

}
